package com.yonyou.ucf.mdf.app.isvdxq.secondpart.model;

import java.util.List;

public class YonyouInParamBean {
    private String resubmitCheckKey; //必填 保证请求的幂等性,该值由客户端生成,并且必须是全局唯一的，长度不能超过32位。更多信息,请参见«MDD幂等性»
    private Boolean mergeSourceData; //必填 合并上游数据，固定值传入true。
    private Boolean needCalcLines; //非必填 表体行计算标识：不传或传入false时不对子表进行二次计算，数量及价格相关从上游带入；为true时，以数量进行件数、计价数量相关反算，金额相关计算依据以参数calcLinesKey为准；
    private String calcLinesKey; //非必填 表体行计算依据，不传或传入null时默认原币无税金额（oriMoney），支持传入：oriUnitPrice、oriTaxUnitPrice、oriMoney、oriSum、natUnitPrice、natTaxUnitPrice、natMoney、natSum。作为计算依据的金额类字段，表体中对应参数不可为空。
    private String code; //非必填 单据编号：以系统编码规则配置为准：系统设置为手工编号时必输，系统设置为自动编号时非必输
    private String vouchdate; //必填 单据日期，日期格式:YYYYMMDD
    private String bustype; //交易类型id，或交易类型code；业务流中未配置交易类型且未设置默认交易类型时必输。
    private String warehouse; //仓库id，或仓库code；上游单据未指定仓库时必输
    private String memo; //非必填 备注
    private String _status; //必填 操作标识, Insert:新增
    private List<ChildInfo> purInRecords; //采购入库单子表

    public String getResubmitCheckKey() {
        return resubmitCheckKey;
    }

    public void setResubmitCheckKey(String resubmitCheckKey) {
        this.resubmitCheckKey = resubmitCheckKey;
    }

    public Boolean getMergeSourceData() {
        return mergeSourceData;
    }

    public void setMergeSourceData(Boolean mergeSourceData) {
        this.mergeSourceData = mergeSourceData;
    }

    public Boolean getNeedCalcLines() {
        return needCalcLines;
    }

    public void setNeedCalcLines(Boolean needCalcLines) {
        this.needCalcLines = needCalcLines;
    }

    public String getCalcLinesKey() {
        return calcLinesKey;
    }

    public void setCalcLinesKey(String calcLinesKey) {
        this.calcLinesKey = calcLinesKey;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getVouchdate() {
        return vouchdate;
    }

    public void setVouchdate(String vouchdate) {
        this.vouchdate = vouchdate;
    }

    public String getBustype() {
        return bustype;
    }

    public void setBustype(String bustype) {
        this.bustype = bustype;
    }

    public String getWarehouse() {
        return warehouse;
    }

    public void setWarehouse(String warehouse) {
        this.warehouse = warehouse;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public String get_status() {
        return _status;
    }

    public void set_status(String _status) {
        this._status = _status;
    }

    public List<ChildInfo> getPurInRecords() {
        return purInRecords;
    }

    public void setPurInRecords(List<ChildInfo> purInRecords) {
        this.purInRecords = purInRecords;
    }

    //序列号孙表 物料暂未启用序列号管理
    public static class SnInfo{
        private String sn; //序列号，存在序列号时必填
        private String _status; //操作标识，Insert:新增，存在序列号时必填

        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }

        public String get_status() {
            return _status;
        }
        public void set_status(String _status) {
            this._status = _status;
        }
    }
    //采购入库单子表
    public static class ChildInfo{
        //物料未启用序列号管理
        private boolean isSerialNoManage;
        private List<SnInfo> purInRecordsSNs;//序列号孙表
        public List<SnInfo> getPurInRecordsSNs() {
            return purInRecordsSNs;
        }
        public void setPurInRecordsSNs(List<SnInfo> purInRecordsSNs) {
            this.purInRecordsSNs = purInRecordsSNs;
        }

        public boolean getIsSerialNoManage() {
            return isSerialNoManage;
        }

        public void setIsSerialNoManage(boolean isSerialNoManage) {
            this.isSerialNoManage = isSerialNoManage;
        }

        private String makeRuleCode; //必填 生单规则编码，固定值。订单入库：st_purchaseorder，订单退库：st_purchaseorder3，退货入库：st_purchaseorder_return，到货入库：pu_arrivalorder
        private String sourceid; //必填 上游单据主表id
        private String sourceautoid; //必填 上游单据子表id
        private String batchno; //批次号，批次管理的物料必输
        private String producedate; //生产日期，效期管理的物料必输
        private String goodsposition; //货位id，或货位code；仓库为货位仓且开启了货位记存量时必输
        private Double qty; //实收数量，默认上游带入，若传入数量请确保表体行计算标识needCalcLines=true，并确认calcLinesKey是否符合实际业务场景
        private Double contactsQuantity; //应收数量
        private Double oriUnitPrice; //无税单价，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double oriTaxUnitPrice; //含税单价，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double oriMoney; //无税金额，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double oriSum; //含税金额，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double natUnitPrice; //本币无税单价，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double natTaxUnitPrice; //本币含税单价，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double natMoney; //本币无税金额，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private Double natSum; //本币含税金额，仅在表头参数表体行计算标识needCalcLines=true，且calcLinesKey指定当前字段为计算依据时生效。
        private String memo; //备注
        private String _status; //操作标识, Insert:新增
        private String resubmitCheckKey;


        public String getMakeRuleCode() {
            return makeRuleCode;
        }
        public void setMakeRuleCode(String makeRuleCode) {
            this.makeRuleCode = makeRuleCode;
        }

        public String getSourceid() {
            return sourceid;
        }
        public void setSourceid(String sourceid) {
            this.sourceid = sourceid;
        }

        public String getSourceautoid() {
            return sourceautoid;
        }
        public void setSourceautoid(String sourceautoid) {
            this.sourceautoid = sourceautoid;
        }

        public String getBatchno() {
            return batchno;
        }
        public void setBatchno(String batchno) {
            this.batchno = batchno;
        }

        public String getProducedate() {
            return producedate;
        }
        public void setProducedate(String producedate) {
            this.producedate = producedate;
        }

        public String getGoodsposition() {
            return goodsposition;
        }
        public void setGoodsposition(String goodsposition) {
            this.goodsposition = goodsposition;
        }

        public Double getQty() {
            return qty;
        }
        public void setQty(Double qty) {
            this.qty = qty;
        }

        public Double getContactsQuantity() {
            return contactsQuantity;
        }
        public void setContactsQuantity(Double contactsQuantity) {
            this.contactsQuantity = contactsQuantity;
        }

        public Double getOriUnitPrice() {
            return oriUnitPrice;
        }
        public void setOriUnitPrice(Double oriUnitPrice) {
            this.oriUnitPrice = oriUnitPrice;
        }

        public Double getOriTaxUnitPrice() {
            return oriTaxUnitPrice;
        }
        public void setOriTaxUnitPrice(Double oriTaxUnitPrice) {
            this.oriTaxUnitPrice = oriTaxUnitPrice;
        }

        public Double getOriMoney() {
            return oriMoney;
        }
        public void setOriMoney(Double oriMoney) {
            this.oriMoney = oriMoney;
        }

        public Double getOriSum() {
            return oriSum;
        }
        public void setOriSum(Double oriSum) {
            this.oriSum = oriSum;
        }

        public Double getNatUnitPrice() {
            return natUnitPrice;
        }
        public void setNatUnitPrice(Double natUnitPrice) {
            this.natUnitPrice = natUnitPrice;
        }

        public Double getNatTaxUnitPrice() {
            return natTaxUnitPrice;
        }
        public void setNatTaxUnitPrice(Double natTaxUnitPrice) {
            this.natTaxUnitPrice = natTaxUnitPrice;
        }

        public Double getNatMoney() {
            return natMoney;
        }
        public void setNatMoney(Double natMoney) {
            this.natMoney = natMoney;
        }

        public Double getNatSum() {
            return natSum;
        }
        public void setNatSum(Double natSum) {
            this.natSum = natSum;
        }

        public String getMemo() {
            return memo;
        }
        public void setMemo(String memo) {
            this.memo = memo;
        }

        public String get_status() {
            return _status;
        }
        public void set_status(String _status) {
            this._status = _status;
        }

        public String getResubmitCheckKey() {
            return resubmitCheckKey;
        }

        public void setResubmitCheckKey(String resubmitCheckKey) {
            this.resubmitCheckKey = resubmitCheckKey;
        }
    }
}
